library(tidyverse)
library(janitor)
library(here)
library(readxl)
library(lubridate)
library(stringr)
source("data_cleaning_scripts/bb_candy_clean_2015.R")
Warning: NAs introduced by coercion
dim(bb_candy_2015)
[1] 5630 124
pivot_2015_test <- bb_candy_2015 %>%
pivot_longer(cols = ("[Butterfinger]":"[York Peppermint Patties]"),
names_to = "sweets",
values_to = "enjoyment")
pivot_select_2015_test <- pivot_2015_test %>%
select(Timestamp, `How old are you?`, `Are you going actually going trick or treating yourself?`, sweets, enjoyment)
dim(pivot_2015_test)
[1] 523590 33
Clean up bb_candy_2015
Clean up bb_candy_2016
bb_candy_2016_string_to_lower <- bb_candy_2016_date %>%
mutate(country = str_to_lower(country))
bb_candy_2016_str_replace_test <- bb_candy_2016_string_to_lower %>%
mutate(country = str_replace_all(country, "us", "usa"),
country = str_replace_all(country, "usaa", "usa"),
country = str_replace_all(country, "united states of america", "usa"),
country = str_replace_all(country, "merica", "usa"),
country = str_replace_all(country, "usa!", "usa"),
country = str_replace_all(country, "u.s.", "usa"),
country = str_replace_all(country, "usa usa usa", "usa"),
country = str_replace_all(country, "united sates", "usa"),
country = str_replace_all(country, "units states", "usa"),
country = str_replace_all(country, "usa usa", "usa"),
country = str_replace_all(country, "the yoo ess of aaayyyyyy", "usa"),
country = str_replace_all(country, "murica", "usa"),
country = str_replace_all(country, "the best one - usa", "usa"),
country = str_replace_all(country, "trumpistan", "usa"),
country = str_replace_all(country, "units state", "usa"),
country = str_replace_all(country, "united states", "usa"),
country = str_replace_all(country, "united state", "usa"),
country = str_replace_all(country, "united stetes", "usa"),
country = str_replace_all(country, "usa!!!!!", "usa"),
country = str_replace_all(country, "usaa.", "usa"),
country = str_replace_all(country, "usasa", "usa"),
country = str_replace_all(country, "usa \\((i think but it's an election year so who can really tell\\))", "usa"),
country = str_replace_all(country, "cascadia", "usa"),
country = str_replace_all(country, "NANA\\..+NA", "usa"),
country = str_replace_all(country, "the republic of cascadia", "usa"),
country = str_replace_all(country, "[0-9]", "NA"),
country = str_replace_all(country, "united kingdom", "uk"),
country = str_replace_all(country, "united kindon", "uk"),
country = str_replace_all(country, "united kingdon", "uk"),
country = str_replace_all(country, "united kindom", "uk"),
country = str_replace_all(country, "england", "uk")
)
bb_candy_2016_country_count_test <- bb_candy_2016_str_replace_test %>%
distinct(country) %>%
summarise(n())
bb_candy_2016_country_count_test
distinct_country_remove <- bb_candy_2016_str_replace_test %>%
distinct(country)
view(distinct_country_remove)
Clean up bb_candy_2017
Clean countries test
bb_candy_2017_str_to_lower <- bb_candy_2017_select %>%
mutate(country = str_to_lower(country))
bb_candy_2017_str_replace_test7 <- bb_candy_2017_str_to_lower %>%
mutate(change_to_na = str_detect(country, "[0-9]"), .after = country) %>%
mutate(country = ifelse(change_to_na, NA, country))
bb_candy_2017_str_replace_test_usa <- bb_candy_2017_str_replace_test7 %>%
mutate(country = str_remove_all(country, "[:punct:]"),
country = str_replace_all(country, ".*usa.*", "usa"),
country = str_replace_all(country, "united s.*", "usa"),
country = str_replace_all(country, "unites.*", "usa"),
country = str_replace_all(country, "unied states", "usa"),
country = str_replace_all(country, "unite states", "usa"),
country = str_replace_all(country, ".merica", "usa"),
country = str_replace_all(country, ".*usa", "usa"),
country = str_replace_all(country, "u s.*", "usa"),
country = str_replace_all(country, "^us$", "usa"),
country = str_replace_all(country, "unhinged states", "usa"),
country = str_replace_all(country, "ahemamerca", "usa"),
country = str_replace_all(country, "u s a", "usa"),
country = str_replace_all(country, ".usa", "usa"),
country = str_replace_all(country, "murica", "usa"),
country = str_replace_all(country, "new york", "usa"),
country = str_replace_all(country, "new jersey", "usa"),
country = str_replace_all(country, "california", "usa"),
country = str_replace_all(country, "north carolina", "usa"),
country = str_replace_all(country, "pittsburgh", "usa"),
country = str_replace_all(country, "murrika", "usa"),
country = str_replace_all(country, "murica", "usa"),
country = str_replace_all(country, "nusa", "usa"),
country = str_replace_all(country, "alaska", "usa"),
country = str_replace_all(country, "trumpistan", "usa"),
country = str_replace_all(country, "merica", "usa")
)
bb_candy_2017_str_replace_test_canada2 <- bb_candy_2017_str_replace_test_usa %>%
mutate(country = str_replace_all(country, "canada`", "canada"),
country = str_replace_all(country, "can.*", "canada"),
country = str_replace_all(country, "soviet canuckistan", "canada"),
country = str_replace_all(country, "soviet canada", "canada"))
bb_candy_2017_str_replace_uk <- bb_candy_2017_str_replace_test_canada2 %>%
mutate(country = str_replace_all(country, "united kingdom", "uk"),
country = str_replace_all(country, "scotland", "uk"),
country = str_replace_all(country, "england", "uk")
)
bb_candy_2017_str_to_lower_new <- bb_candy_2017_str_replace_uk %>%
group_by(country) %>%
distinct() %>%
summarise(n())
bb_candy_2017_str_to_lower_og1 <- bb_candy_2017_str_to_lower %>%
group_by(country) %>%
distinct() %>%
summarise(n())
view(bb_candy_2017_str_to_lower_new)
view(bb_candy_2017_str_to_lower_og1)
view(bb_candy_2017_distinct_country)
view(bb_candy_2017_str_to_lower_og)
LS0tCnRpdGxlOiAiVGFzayA0IC0gQ2xlYW5pbmciCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShqYW5pdG9yKQpsaWJyYXJ5KGhlcmUpCmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKbGlicmFyeShzdHJpbmdyKQpgYGAKCmBgYHtyfQpiYl9jYW5keV8yMDE1IDwtIHJlYWRfeGxzeCgiZGF0YS9yYXdfZGF0YS9ib2luZy1ib2luZy1jYW5keS0yMDE1Lnhsc3giKQpiYl9jYW5keV8yMDE2IDwtIHJlYWRfeGxzeCgiZGF0YS9yYXdfZGF0YS9ib2luZy1ib2luZy1jYW5keS0yMDE2Lnhsc3giKQpiYl9jYW5keV8yMDE3IDwtIHJlYWRfeGxzeCgiZGF0YS9yYXdfZGF0YS9ib2luZy1ib2luZy1jYW5keS0yMDE3Lnhsc3giKQpgYGAKCmBgYHtyfQpzb3VyY2UoImRhdGFfY2xlYW5pbmdfc2NyaXB0cy9iYl9jYW5keV9jbGVhbl8yMDE1LlIiKQpgYGAKCmBgYHtyfQpkaW0oYmJfY2FuZHlfMjAxNSkKCnBpdm90XzIwMTVfdGVzdCA8LSBiYl9jYW5keV8yMDE1ICU+JSAKICBwaXZvdF9sb25nZXIoY29scyA9ICgiW0J1dHRlcmZpbmdlcl0iOiJbWW9yayBQZXBwZXJtaW50IFBhdHRpZXNdIiksCiAgICAgICAgICAgICAgIG5hbWVzX3RvID0gInN3ZWV0cyIsCiAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJlbmpveW1lbnQiKQoKcGl2b3Rfc2VsZWN0XzIwMTVfdGVzdCA8LSBwaXZvdF8yMDE1X3Rlc3QgJT4lIAogIHNlbGVjdChUaW1lc3RhbXAsIGBIb3cgb2xkIGFyZSB5b3U/YCwgYEFyZSB5b3UgZ29pbmcgYWN0dWFsbHkgZ29pbmcgdHJpY2sgb3IgdHJlYXRpbmcgeW91cnNlbGY/YCwgc3dlZXRzLCBlbmpveW1lbnQpCnZpZXcocGl2b3RfMjAxNV90ZXN0KQpgYGAKYGBge3J9CnBpdm90X3NlbGVjdF9ncm91cF8yMDE1IDwtIHBpdm90X3NlbGVjdF8yMDE1X3Rlc3QgJT4lIAogIGdyb3VwX2J5KHN3ZWV0cykgJT4lIAogIHN1bW1hcmlzZShuKCkpCgo/ZXh0cmFjdApgYGAKCgpDbGVhbiB1cCBiYl9jYW5keV8yMDE1CmBgYHtyfQpiYl9jYW5keV8yMDE1X2FnZV9zdHJfcmVtb3ZlIDwtIGJiX2NhbmR5XzIwMTUgJT4lIAogIG11dGF0ZShgSG93IG9sZCBhcmUgeW91P2AgPSBzdHJfcmVtb3ZlKGBIb3cgb2xkIGFyZSB5b3U/YCwgIlxcLi4rIikpCgpiYl9jYW5keV8yMDE1X2FnZV9udW1lcmljIDwtIGJiX2NhbmR5XzIwMTVfYWdlX3N0cl9yZW1vdmUgJT4lIAogIG11dGF0ZShgSG93IG9sZCBhcmUgeW91P2AgPSBhcy5udW1lcmljKGBIb3cgb2xkIGFyZSB5b3U/YCkpICU+JSAKICByZW5hbWUoImFnZSIgPSBgSG93IG9sZCBhcmUgeW91P2AsCiAgICAgICAgICJnb2luZ190cmlja19vcl90cmVhdGluZyIgPSBgQXJlIHlvdSBnb2luZyBhY3R1YWxseSBnb2luZyB0cmljayBvciB0cmVhdGluZyB5b3Vyc2VsZj9gKQoKYmJfY2FuZHlfMjAxNV9jbGVhbl9uYW1lcyA8LSBiYl9jYW5keV8yMDE1X2FnZV9udW1lcmljICU+JSAKICBjbGVhbl9uYW1lcygpCgpiYl9jYW5keV8yMDE1X3JlbG9jYXRlX25ldHRvIDwtIGJiX2NhbmR5XzIwMTVfY2xlYW5fbmFtZXMgJT4lIAogIHJlbG9jYXRlKG5lY2NvX3dhZmVycywgLmFmdGVyID0gcGl4eV9zdGl4KQoKYmJfY2FuZHlfMjAxNV9zZWxlY3QgPC0gYmJfY2FuZHlfMjAxNV9yZWxvY2F0ZV9uZXR0byAlPiUgCiAgc2VsZWN0KHRpbWVzdGFtcCwgYWdlLCBnb2luZ190cmlja19vcl90cmVhdGluZywgYnV0dGVyZmluZ2VyOnlvcmtfcGVwcGVybWludF9wYXR0aWVzKQoKYmJfY2FuZHlfMjAxNV9vcmRlcl9jb2xzIDwtIGJiX2NhbmR5XzIwMTVfc2VsZWN0ICU+JSAKICBzZWxlY3QodGltZXN0YW1wLCBhZ2UsIGdvaW5nX3RyaWNrX29yX3RyZWF0aW5nLCBzb3J0KGNvbG5hbWVzKC4pKSkKCmJiX2NhbmR5XzIwMTVfZGF0ZSA8LSBiYl9jYW5keV8yMDE1X29yZGVyX2NvbHMgJT4lIAogIG11dGF0ZSh0aW1lc3RhbXAgPSAyMDE1KSAlPiUgCiAgcmVuYW1lKCJ5ZWFyIiA9ICJ0aW1lc3RhbXAiKQoKYGBgCgoKQ2xlYW4gdXAgYmJfY2FuZHlfMjAxNgpgYGB7cn0KIyBDaGFuZ2UgY29sdW1uIGhlYWRlcnMKCmJiX2NhbmR5XzIwMTZfbmV3X2hlYWRlcnMgPC0gYmJfY2FuZHlfMjAxNiAlPiUgCiAgcmVuYW1lKCJnb2luZ190cmlja19vcl90cmVhdGluZyIgPSBgQXJlIHlvdSBnb2luZyBhY3R1YWxseSBnb2luZyB0cmljayBvciB0cmVhdGluZyB5b3Vyc2VsZj9gLAogICAgICAgICAiZ2VuZGVyIiA9IGBZb3VyIGdlbmRlcjpgLAogICAgICAgICAiYWdlIiA9IGBIb3cgb2xkIGFyZSB5b3U/YCwKICAgICAgICAgImNvdW50cnkiID0gYFdoaWNoIGNvdW50cnkgZG8geW91IGxpdmUgaW4/YCwKICAgICAgICAgInN0YXRlIiA9IGBXaGljaCBzdGF0ZSwgcHJvdmluY2UsIGNvdW50eSBkbyB5b3UgbGl2ZSBpbj9gCiAgKQoKIyBDaGFuZ2UgYWdlIHRvIGFzLm51bWVyaWMgYW5kIHJlbW92ZSBkZWNpbWFsCmJiX2NhbmR5XzIwMTZfYWdlX3N0cl9yZW1vdmUgPC0gYmJfY2FuZHlfMjAxNl9uZXdfaGVhZGVycyAlPiUgCiAgbXV0YXRlKGFnZSA9IHN0cl9yZW1vdmUoYWdlLCAiXFwuLisiKSkgJT4lIAogIG11dGF0ZShhZ2UgPSBhcy5udW1lcmljKGFnZSkpCgojIENsZWFuIHRoZSBjb2x1bW4gaGVhZGVycwoKYmJfY2FuZHlfMjAxNl9jbGVhbl9uYW1lcyA8LSBiYl9jYW5keV8yMDE2X2FnZV9zdHJfcmVtb3ZlICU+JSAKICBjbGVhbl9uYW1lcygpCgpiYl9jYW5keV8yMDE2X3NlbGVjdCA8LSBiYl9jYW5keV8yMDE2X2NsZWFuX25hbWVzICU+JSAKICBzZWxlY3QodGltZXN0YW1wLCBnb2luZ190cmlja19vcl90cmVhdGluZywgZ2VuZGVyLCBhZ2UsIGNvdW50cnksIHN0YXRlLCB4MTAwX2dyYW5kX2Jhcjp5b3JrX3BlcHBlcm1pbnRfcGF0dGllcykKCmJiX2NhbmR5XzIwMTZfb3JkZXJfY29scyA8LSBiYl9jYW5keV8yMDE2X3NlbGVjdCAlPiUgCiAgc2VsZWN0KHRpbWVzdGFtcCwgZ29pbmdfdHJpY2tfb3JfdHJlYXRpbmcsIGdlbmRlciwgYWdlLCBjb3VudHJ5LCBzdGF0ZSwgc29ydChjb2xuYW1lcyguKSksIC1wZXJzb25fb2ZfaW50ZXJlc3Rfc2Vhc29uXzNfZHZkX2JveF9zZXRfbm90X2luY2x1ZGluZ19kaXNjXzRfd2l0aF9oaWxhcmlvdXNfb3V0dGFrZXMpCgpiYl9jYW5keV8yMDE2X2RhdGUgPC0gYmJfY2FuZHlfMjAxNl9vcmRlcl9jb2xzICU+JSAKICBtdXRhdGUodGltZXN0YW1wID0gMjAxNikgJT4lIAogIHJlbmFtZSgieWVhciIgPSAidGltZXN0YW1wIikKCiMgY3JlYXRlX2lkXzIwMTYgPC0gYmJfY2FuZHlfMjAxNl9kYXRlICU+JSAKIyAgIHJvd2lkX3RvX2NvbHVtbigiaWQiKQoKdmlldyhiYl9jYW5keV8yMDE2X2RhdGUpCgpgYGAKCmBgYHtyfQpiaW5kX3Jvd3NfdGVzdCAgPC0gYmluZF9yb3dzKGJiX2NhbmR5XzIwMTVfZGF0ZSwgYmJfY2FuZHlfMjAxNl9kYXRlKQpgYGAKCmBgYHtyfQpiYl9jYW5keV8yMDE2X3N0cmluZ190b19sb3dlciA8LSBiYl9jYW5keV8yMDE2X2RhdGUgJT4lIAogIG11dGF0ZShjb3VudHJ5ID0gc3RyX3RvX2xvd2VyKGNvdW50cnkpKQoKYmJfY2FuZHlfMjAxNl9zdHJfcmVwbGFjZV90ZXN0IDwtIGJiX2NhbmR5XzIwMTZfc3RyaW5nX3RvX2xvd2VyICU+JSAKICBtdXRhdGUoY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAidXMiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVzYWEiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVuaXRlZCBzdGF0ZXMgb2YgYW1lcmljYSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAibWVyaWNhIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1c2EhIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1LnMuIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1c2EgdXNhIHVzYSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAidW5pdGVkIHNhdGVzIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1bml0cyBzdGF0ZXMiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVzYSB1c2EiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInRoZSB5b28gZXNzIG9mIGFhYXl5eXl5eSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAibXVyaWNhIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ0aGUgYmVzdCBvbmUgLSB1c2EiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInRydW1waXN0YW4iLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVuaXRzIHN0YXRlIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1bml0ZWQgc3RhdGVzIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1bml0ZWQgc3RhdGUiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVuaXRlZCBzdGV0ZXMiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVzYSEhISEhIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1c2FhLiIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAidXNhc2EiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVzYSBcXCgoaSB0aGluayBidXQgaXQncyBhbiBlbGVjdGlvbiB5ZWFyIHNvIHdobyBjYW4gcmVhbGx5IHRlbGxcXCkpIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJjYXNjYWRpYSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiTkFOQVxcLi4rTkEiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInRoZSByZXB1YmxpYyBvZiBjYXNjYWRpYSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiWzAtOV0iLCAiTkEiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAidW5pdGVkIGtpbmdkb20iLCAidWsiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAidW5pdGVkIGtpbmRvbiIsICJ1ayIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1bml0ZWQga2luZ2RvbiIsICJ1ayIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1bml0ZWQga2luZG9tIiwgInVrIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgImVuZ2xhbmQiLCAidWsiKQogICAgICAgICApCgoKYmJfY2FuZHlfMjAxNl9jb3VudHJ5X2NvdW50X3Rlc3QgPC0gYmJfY2FuZHlfMjAxNl9zdHJfcmVwbGFjZV90ZXN0ICU+JQogIGRpc3RpbmN0KGNvdW50cnkpICU+JSAKICBzdW1tYXJpc2UobigpKQpiYl9jYW5keV8yMDE2X2NvdW50cnlfY291bnRfdGVzdAoKZGlzdGluY3RfY291bnRyeV9yZW1vdmUgPC0gYmJfY2FuZHlfMjAxNl9zdHJfcmVwbGFjZV90ZXN0ICU+JSAKICBkaXN0aW5jdChjb3VudHJ5KQp2aWV3KGRpc3RpbmN0X2NvdW50cnlfcmVtb3ZlKQpgYGAKCgoKQ2xlYW4gdXAgYmJfY2FuZHlfMjAxNwpgYGB7cn0KYmJfY2FuZHlfMjAxN19jbGVhbl9uYW1lcyA8LSBiYl9jYW5keV8yMDE3ICU+JSAKICBjbGVhbl9uYW1lcygpCiAgCgpiYl9jYW5keV8yMDE3X2NsZWFuX3Rlc3QxMyA8LSBiYl9jYW5keV8yMDE3X2NsZWFuX25hbWVzICU+JSAKICBuYW1lcygpICU+JSAKICBzdHJfcmVtb3ZlKCJxWzAtOV0rXyIpCgpuYW1lcyhiYl9jYW5keV8yMDE3X2NsZWFuX25hbWVzKSA8LSBiYl9jYW5keV8yMDE3X2NsZWFuX3Rlc3QxMwoKYmJfY2FuZHlfMjAxN19hZ2VfbnVtZXJpYyA8LSBiYl9jYW5keV8yMDE3X2NsZWFuX25hbWVzICU+JSAKICBtdXRhdGUoYWdlID0gcm91bmQoYXMubnVtZXJpYyhhZ2UpKSkKCmJiX2NhbmR5XzIwMTdfcmVuYW1lIDwtIGJiX2NhbmR5XzIwMTdfYWdlX251bWVyaWMgJT4lIAogIHJlbmFtZSgic3RhdGUiID0gc3RhdGVfcHJvdmluY2VfY291bnR5X2V0YywKICAgICAgICAgIngxMDBfZ3JhbmRfYmFyIiA9ICIxMDBfZ3JhbmRfYmFyIiwKICAgICAgICAgImdvaW5nX3RyaWNrX29yX3RyZWF0aW5nIiA9IGdvaW5nX291dCkKCmJiX2NhbmR5XzIwMTdfc2VsZWN0IDwtIGJiX2NhbmR5XzIwMTdfcmVuYW1lICU+JSAKICBjYmluZCgieWVhciIpICU+JQogIGNsZWFuX25hbWVzKCkgJT4lIAogIG11dGF0ZSh5ZWFyID0gYXMubnVtZXJpYyh5ZWFyKSwKICAgICAgICAgeWVhciA9IDIwMTcpCgpiYl9jYW5keV8yMDE3X2FkZF95ZWFyIDwtIGJiX2NhbmR5XzIwMTdfc2VsZWN0ICU+JSAKICByZWxvY2F0ZSh5ZWFyLCAuYWZ0ZXIgPSBpbnRlcm5hbF9pZCkKCmJiX2NhbmR5XzIwMTdfc2VsZWN0IDwtIGJiX2NhbmR5XzIwMTdfYWRkX3llYXIgJT4lIAogIHNlbGVjdCh5ZWFyLCBnb2luZ190cmlja19vcl90cmVhdGluZywgZ2VuZGVyLCBhZ2UsIGNvdW50cnksIHN0YXRlLCB4MTAwX2dyYW5kX2Jhcjp5b3JrX3BlcHBlcm1pbnRfcGF0dGllcywgLXJlYWxfaG91c2V3aXZlc19vZl9vcmFuZ2VfY291bnR5X3NlYXNvbl85X2JsdWVfcmF5KQpgYGAKCiMgQ2xlYW4gY291bnRyaWVzIHRlc3QKYGBge3J9CmJiX2NhbmR5XzIwMTdfc3RyX3RvX2xvd2VyIDwtIGJiX2NhbmR5XzIwMTdfc2VsZWN0ICU+JSAKICBtdXRhdGUoY291bnRyeSA9IHN0cl90b19sb3dlcihjb3VudHJ5KSkKCmJiX2NhbmR5XzIwMTdfc3RyX3JlcGxhY2VfdGVzdDcgPC0gYmJfY2FuZHlfMjAxN19zdHJfdG9fbG93ZXIgJT4lIAogIG11dGF0ZShjaGFuZ2VfdG9fbmEgPSBzdHJfZGV0ZWN0KGNvdW50cnksICJbMC05XSIpLCAuYWZ0ZXIgPSBjb3VudHJ5KSAlPiUgIAogIG11dGF0ZShjb3VudHJ5ID0gaWZlbHNlKGNoYW5nZV90b19uYSwgTkEsIGNvdW50cnkpKQoKCmJiX2NhbmR5XzIwMTdfc3RyX3JlcGxhY2VfdGVzdF91c2EgPC0gYmJfY2FuZHlfMjAxN19zdHJfcmVwbGFjZV90ZXN0NyAlPiUgCiAgbXV0YXRlKGNvdW50cnkgPSBzdHJfcmVtb3ZlX2FsbChjb3VudHJ5LCAiWzpwdW5jdDpdIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgIi4qdXNhLioiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVuaXRlZCBzLioiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVuaXRlcy4qIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1bmllZCBzdGF0ZXMiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVuaXRlIHN0YXRlcyIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiLm1lcmljYSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiLip1c2EiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInUgcy4qIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJedXMkIiwgInVzYSIpLAogIAoKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAidW5oaW5nZWQgc3RhdGVzIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJhaGVtYW1lcmNhIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJ1IHMgYSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiLnVzYSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAibXVyaWNhIiwgInVzYSIpLAogICAgICAgICAKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAibmV3IHlvcmsiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgIm5ldyBqZXJzZXkiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgImNhbGlmb3JuaWEiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgIm5vcnRoIGNhcm9saW5hIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJwaXR0c2J1cmdoIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJtdXJyaWthIiwgInVzYSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJtdXJpY2EiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgIm51c2EiLCAidXNhIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgImFsYXNrYSIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAidHJ1bXBpc3RhbiIsICJ1c2EiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAibWVyaWNhIiwgInVzYSIpCiAgKQoKCmJiX2NhbmR5XzIwMTdfc3RyX3JlcGxhY2VfdGVzdF9jYW5hZGEyIDwtIGJiX2NhbmR5XzIwMTdfc3RyX3JlcGxhY2VfdGVzdF91c2EgJT4lIAogICAgbXV0YXRlKGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgImNhbmFkYWAiLCAiY2FuYWRhIiksCiAgICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiY2FuLioiLCAiY2FuYWRhIiksCiAgICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAic292aWV0IGNhbnVja2lzdGFuIiwgImNhbmFkYSIpLAogICAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInNvdmlldCBjYW5hZGEiLCAiY2FuYWRhIikpCgpiYl9jYW5keV8yMDE3X3N0cl9yZXBsYWNlX3VrIDwtIGJiX2NhbmR5XzIwMTdfc3RyX3JlcGxhY2VfdGVzdF9jYW5hZGEyICU+JQogICAgbXV0YXRlKGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgInVuaXRlZCBraW5nZG9tIiwgInVrIiksCiAgICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAic2NvdGxhbmQiLCAidWsiKSwKICAgICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJlbmdsYW5kIiwgInVrIikKICAgICAgICAgICApCgpiYl9jYW5keV8yMDE3X3N0cl90b19sb3dlcl9uZXcgPC0gYmJfY2FuZHlfMjAxN19zdHJfcmVwbGFjZV91ayAlPiUgCiAgZ3JvdXBfYnkoY291bnRyeSkgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIHN1bW1hcmlzZShuKCkpCgoKYmJfY2FuZHlfMjAxN19zdHJfdG9fbG93ZXJfb2cxIDwtIGJiX2NhbmR5XzIwMTdfc3RyX3RvX2xvd2VyICU+JSAKICBncm91cF9ieShjb3VudHJ5KSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgc3VtbWFyaXNlKG4oKSkKCnZpZXcoYmJfY2FuZHlfMjAxN19zdHJfdG9fbG93ZXJfbmV3KQp2aWV3KGJiX2NhbmR5XzIwMTdfc3RyX3RvX2xvd2VyX29nMSkKCmBgYAoKYGBge3J9CiAgCnZpZXcoYmJfY2FuZHlfMjAxN19kaXN0aW5jdF9jb3VudHJ5KQpgYGAKCgoK